
/*ajimber */
package vista.Acceso;

import java.util.ArrayList;
import java.util.List;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
import modelo.entidades.Acceso;

public class AccesoMantenimientoTableModel implements TableModel {

    private List<Acceso> Accesos = new ArrayList<Acceso>();
    private List<TableModelListener> tableListeners = new ArrayList<TableModelListener>();
    //private List<ListDataListener> dataListeners = new ArrayList<ListDataListener>();
    private static AccesoMantenimientoTableModel model = null;

    private AccesoMantenimientoTableModel() {
    }

    public static AccesoMantenimientoTableModel create() {
        if (model == null) {
            model = new AccesoMantenimientoTableModel();
        }
        return model;
    }

    public List<Acceso> getAccesos() {
        return Accesos;
    }

    public void setAccesos(List<Acceso> Accesos) {
        this.Accesos = Accesos;
        fireContentsChanged();
    }

    protected void fireContentsChanged() {
        fireContentsChangedTableModel();
    }
    //--------------- MÉTODOS PROPIOS DE TableModel -------------------------

    public Acceso getRow(int indexRow) {
        return Accesos.get(indexRow);
    }

    public int getRowCount() {
        return Accesos.size();
    }

    public int getColumnCount() {
        return 3;
    }

    public String getColumnName(int columnIndex) {
        String name = null;
        switch (columnIndex) {
            case 0:
                name = "Nombre";
                break;
            case 1:
                name = "Descripcion";
                break;
        }
        return name;
    }

    public Class<?> getColumnClass(int columnIndex) {
        return String.class; //Todos los valores de contacto son un String
    }

    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return false; //No permito editar celdas
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        Acceso acceso = Accesos.get(rowIndex);
        String value = null;
        switch (columnIndex) {
            case 0:
                value = acceso.getNombre();
                break;
            case 1:
                value = acceso.getDescripcion();
                break;
        }
        return value;

    }

    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void addTableModelListener(TableModelListener l) {
        tableListeners.add(l);
    }

    public void removeTableModelListener(TableModelListener l) {
        tableListeners.remove(l);
    }

    protected void fireContentsChangedTableModel() {
        //TableModelEvent event = new TableModelEvent(this,0,getRowCount());
        TableModelEvent event = new TableModelEvent(this, 0, this.getRowCount() - 1, TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT);
        for (TableModelListener listener : tableListeners) {
            listener.tableChanged(event);
        }
    }
}
